format 8 
epsilon basic 1.0e-16 
epsilon uniform 1.0e-16 
epsilon findeigen 1.0e-16 
epsilon results 1.0e-18 
epsilon sorteigen 1.0e-16 

bind b 4
bind g 2

* Functions & variables part:
func gdmm() 
if ( (g<#(PK2)) and (#(PK2)<b) )
1
else
0
end
end

func gdMm() 
if ( (#(PK2)>=b) )
1
else
0
end
end

func gdtrn() 
if ( #(PK2) > 0 )
1
else
0
end
end

func gdtRN() 
if ( #(PK2) > 0 )
0
else
1
end
end

bind 
N   7
N1   N-1
K   5
lam   7
mu   1/(0.25)
lamD   0.03
lam0   0.03
mu0   1
end


srn model1(mum, lamIn, muIn, muM, muD)  
  * == PLACE == 
  Pidl 0
  PLU N1
  Ppr 1
  Pqu 0
  PK1 K
  Pins 0
  Pdec 0
  Pmm 0
  Pmm1 0
  Pmr 0
  PMm 0
  Prn 0
  Pd1 0
  Pd2 0
  PK2 0
  PMr 0
  end
  * == Timed Transitions == 
  Tpr ind mu
  Tmm ind mum
  TPI ind lamIn
  Tins ind muIn
  TLU ind lam
  Tf ind lam0
  Tmr ind mu0
  TMm ind muM
  Td placedep PK1 lamD
  TMr ind muD 
  end
  * == Immediate Transitions ==  
  tNA ind 0.5 priority 10 
  tmm ind 0.5 guard gdmm() priority 20 
  tMm ind 0.5 guard gdMm() priority 30 
  tint ind 0.5 priority 10 
  tmm2 ind 0.5 priority 10 
  trn ind 0.5 guard gdtrn() priority 10 
  td1 ind 0.5 priority 10 
  td2 ind 0.5 priority 10 
  tRN ind 0.5 guard gdtRN() priority 10 
  tDF ind 0.5 priority 20 
  end
  * == ARC == 
  * Input Arcs 
  Ppr Tpr 1
  Pqu tint 1
  PLU TLU 1
  Pidl tint 1
  Ppr TPI 1
  Pins Tins 1
  Pdec tNA 1
  Pdec tmm 1
  Pdec tMm 1
  Pmm Tmm 1
  Pmm1 tmm2 1
  Ppr Tf 1
  Pmr Tmr 1
  PMm TMm 1
  Prn trn 1
  Ppr Td 1
  Pd1 td1 1
  Pd2 td2 1
  PK1 Td 1
  PK2 tmm2 1
  PMr TMr 1
  Prn tRN 1
  PK2 tDF K
  Pd2 tDF 1
  end
  * Output Arcs 
  Tpr Pidl 1
  tint Ppr 1
  TLU Pqu 1
  Tpr PLU 1
  TPI Pins 1
  Tins Pdec 1
  tNA Ppr 1
  tmm Pmm 1
  Tmm Pmm1 1
  tmm2 Ppr 1
  tmm2 PK1 1
  Tf Pmr 1
  Tmr Ppr 1
  tMm PMm 1
  TMm Prn 1
  trn Prn 1
  trn PK1 1
  Td Pd1 1
  td1 Pd2 1
  td2 Ppr 1
  td1 PK2 1
  TMr PK1 K
  tRN Ppr 1
  tDF PMr 1
  TMr Prn 1
  end
  * Inhibtor Arcs 
end



echo *********************************************************************** 
echo *********  Outputs asked for the model: model1 ************** 


func Func() 
  Rate(Tpr)
end
var SS_Var srn_exrss(model1; Func; 1/2, 1/15, 1/.5, 1/5, 1/40) 
echo Steady-state throughput of Tpr 

expr SS_Var


end




